#ifndef _KLAS_CAMERA_HPP_
#define _KLAS_CAMERA_HPP_

#include "../include/Rectangle.hpp"
#include "../include/Vector2.hpp"

namespace klas
{
	//! The camera represents what you see in the world.
	/*! It should be noted that this camera is basically an extension of Rectangle.
			Automatic scrolling should probably be added to it. */
	class Camera
	{
		public:
			
			//! Creates a camera with specified dimensions at location 0,0.
			/*! \param dim The dimensions of the camera. */
			Camera(const Vector2<Real>& dim);
			
			//! Translates the camera by adding qty to the camera's current position.
			/*! \param qty The quantity to translate the camera by.
					\return The new rectangle of the camera. */
			Rectangle<Real> translate(const Vector2<Real>& qty);
			
			//! Changes the rectangle of the cam, which includes position and dimensions.
			/*! \param rect The camera's new rectangle */
			void setRect(const Rectangle<Real>& rect);
			
			//! Gets the current rectangle of the camera.
			/*! \return The current rectangle, which includes position and dimensions. */
			Rectangle<Real> getRect() const;
		
		
		private:
			
			//! The camera's rectangle represents where its located and its dimensions.
			Rectangle<Real> m_rect;
	};
}

#endif
